// 生成器 generator函数

// 函数的声明使用了function*, 使得makeIterator函数成为一个generator函数，
// 并且里面使用了yield关键字，makeIterator()返回一个generator对象，
// 通过next()依次调用
// yield可以理解为函数断点,每次next()都会
function *makeIterator(arr){
    for(let i=0; i<arr.length; i++){
        yield arr[i]
    }
}

// const gen = makeIterator(['吃饭', '睡觉', '上班'])
// console.log('首先', gen.next())
// console.log('其次', gen.next())
// console.log('然后', gen.next())
// console.log('最后', gen.next())


function delay(ms) {
    return new Promise((resolve, reject) => {
        setTimeout(resolve, ms);
    });
}

function* baum() {
    yield delay(300).then(() => console.log(1))
    yield console.log(2)
    yield delay(300).then(() => console.log(3))
    yield console.log(4)
  }
  
  const b = baum()
  console.log(b.next())
//   b.next()
//   b.next()
//   b.next()
  
 